
 

function getDay(day){  
    var today = new Date();  
      
    var targetday_milliseconds=today.getTime() + 1000*60*60*24*day;          

    today.setTime(targetday_milliseconds); //注意，这行是关键代码    
      
    var tYear = today.getFullYear();  
    var tMonth = today.getMonth();  
    var tDate = today.getDate();  
    tMonth = doHandleMonth(tMonth + 1);  
    tDate = doHandleMonth(tDate);  
    return tYear+"-"+tMonth+"-"+tDate; 
} 


//获取当前时间，格式YYYY-MM-DD hh:mm:dd
function getNowFormatDateTime() {
    var date = new Date();
    var seperator1 = "-";
    var seperator2 = ":";
    var month = date.getMonth() + 1;
    var strDate = date.getDate();
    if (month >= 1 && month <= 9) {
        month = "0" + month;
    }
    if (strDate >= 0 && strDate <= 9) {
        strDate = "0" + strDate;
    }
    var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
            + " " + doHandleMonth(date.getHours()) + seperator2 + doHandleMonth(date.getMinutes())
            + seperator2 + doHandleMonth(date.getSeconds());
    return currentdate;
}

function doHandleMonth(month){  
    var m = month;  
    if(month.toString().length == 1){  
       m = "0" + month;  
    }  
    return m;  
} 
//获取当月所有日期
function createMonthDay() {
    var daysOfMonth = [];
    var fullYear = new Date().getFullYear();
    var month = new Date().getMonth() + 1;
    var lastDayOfMonth = new Date(fullYear, month, 0).getDate();
    for (var i = 1; i <= lastDayOfMonth; i++) {
        daysOfMonth.push(fullYear + '-' + doHandleMonth(month) + '-' + doHandleMonth(i));
    };
    return daysOfMonth;
}
//根据指定日期获取当月所有日期
function createMonthByDay(day) {
	var dayStr = day.split('-');
    var daysOfMonth = [];
    var fullYear = dayStr[0];
    var month = dayStr[1];
    var lastDayOfMonth = new Date(fullYear, month, 0).getDate();
    for (var i = 1; i <= lastDayOfMonth; i++) {
        daysOfMonth.push(fullYear + '-' + doHandleMonth(month) + '-' + doHandleMonth(i));
    };
    return daysOfMonth;
}
//根据指定日期获取当月截止到现在的所有日期
function createMonthDayByDay(day,haveYear) {
	var dayStr = day.split('-');
    var daysOfMonth = [];
    var fullYear = dayStr[0];
    var month = dayStr[1];
    var lastDayOfMonth = Number(dayStr[2]);
    if(haveYear){
    	for (var i = 1; i <= lastDayOfMonth; i++) {
    		daysOfMonth.push(fullYear + '-' + doHandleMonth(month) + '-' + doHandleMonth(i));
    	};
    }else{
    	for (var i = 1; i <= lastDayOfMonth; i++) {
    		daysOfMonth.push(doHandleMonth(month) + '-' + doHandleMonth(i));
    	};
    }
    return daysOfMonth;
}
//根据指定日期获取当周所有日期
function createWeekDay(day) {
//	day = '2018-01-24'
	var daysOfWeek = [];
	var dayStr = day.split('-');
	var now = new Date(dayStr[0],Number(dayStr[1])-1,dayStr[2]); //当前日期
//	var nowDayOfWeek = now.getDay(); //今天本周的第几天
	var nowDayOfWeek = now.getDay()==0?7:now.getDay(); //今天本周的第几天
	var nowDay = now.getDate(); //当前日
	var nowMonth = now.getMonth(); //当前月
	var nowYear = now.getFullYear(); //当前年
	var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);
	var oneYear = weekStartDate.getFullYear();
    var oneMonth = weekStartDate.getMonth();
    var oneDay = weekStartDate.getDate();
    for (var i = 1; i < 8; i++) {
    	var dataone = new Date(oneYear, oneMonth, oneDay + i);
    	daysOfWeek.push(formatDate(dataone));
    };
    return daysOfWeek;
}

//获取两日期之间的所有日期
function createallDay(stime,etime,haveYear){
    //初始化日期列表，数组
    var diffdate = new Array();
    var i=0;
    //开始日期小于等于结束日期,并循环
    while(stime<=etime){
    	if(haveYear){
    		diffdate[i] = stime;
    	}else{
    		diffdate[i] = stime.substring(5,10)
    	}
        //获取开始日期时间戳
        var stime_ts = new Date(stime).getTime();
        
        //增加一天时间戳后的日期
        var next_date = stime_ts + (24*60*60*1000);
        
        //拼接年月日，这里的月份会返回（0-11），所以要+1
        var next_dates_y = new Date(next_date).getFullYear()+'-';
        var next_dates_m = (new Date(next_date).getMonth()+1 < 10)?'0'+(new Date(next_date).getMonth()+1)+'-':(new Date(next_date).getMonth()+1)+'-';
        var next_dates_d = (new Date(next_date).getDate() < 10)?'0'+new Date(next_date).getDate():new Date(next_date).getDate();
 
        stime = next_dates_y+next_dates_m+next_dates_d;
        
        //增加数组key
        i++;
    }
    return diffdate;
}

//格式化日期：yyyy-MM-dd
function formatDate(date) {
    var myyear = date.getFullYear();
    var mymonth = date.getMonth() + 1;
    var myweekday = date.getDate();
    if (mymonth < 10) {
        mymonth = "0" + mymonth;
    }
    if (myweekday < 10) {
        myweekday = "0" + myweekday;
    }
    return (myyear + "-" + mymonth + "-" + myweekday);
}

//解析html携带的参数
function GetQueryString(name) {
	   var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)","i");
	   var r = window.location.search.substr(1).match(reg);
	   if (r!=null) return unescape(r[2]); return null;
	}
//处理数据
function chulishuju(str){
	if(str == undefined || str == null || str == 'null' || str == '' || str == 'NULL' || str == 'NaN' || str == 'Infinity'){
		str = '--';
	}
	return str;
}
//格式化数据
function formatCurrency(num) 

{	
	if(typeof num != 'string'){
		num = num+"";
	}
    if(num)
    {
        //将num中的$,去掉，将num变成一个纯粹的数据格式字符串
        num = num.toString().replace(/\$|\,/g,'');
        //如果num不是数字，则将num置0，并返回
        if(num == undefined || num == null || num == 'null' || ''==num || isNaN(num) || num == 'Infinity' || num == '-Infinity'){return '--';}
        //如果num是负数，则获取她的符号
        var sign = num.indexOf("-")> -1 ? '-' : '';
        if(sign == '-'){
        	num = num.substring(1,num.length);
        }
        //如果存在小数点，则获取数字的小数部分
        var cents = num.indexOf(".")> 0 ? num.substr(num.indexOf(".")) : '';
        cents = cents.length>1 ? cents : '' ;//注意：这里如果是使用change方法不断的调用，小数是输入不了的
        //获取数字的整数数部分
        num = num.indexOf(".")>0 ? num.substring(0,(num.indexOf("."))) : num ;
        //如果没有小数点，整数部分不能以0开头
        if('' == cents){ if(num.length>1 && '0' == num.substr(0,1)){return '--';}}
        //如果有小数点，且整数的部分的长度大于1，则整数部分不能以0开头
        else{if(num.length>1 && '0' == num.substr(0,1)){return '--';}}
        //针对整数部分进行格式化处理，这是此方法的核心，也是稍难理解的一个地方，逆向的来思考或者采用简单的事例来实现就容易多了
        /*
          也可以这样想象，现在有一串数字字符串在你面前，如果让你给他家千分位的逗号的话，你是怎么来思考和操作的?
          字符串长度为0/1/2/3时都不用添加
          字符串长度大于3的时候，从右往左数，有三位字符就加一个逗号，然后继续往前数，直到不到往前数少于三位字符为止
         */
        for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
        {	
        	num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
        }
        //将数据（符号、整数部分、小数部分）整体组合返回
        return (sign + num + cents);    
    }else{
    	return '--';
    }

}
//格式化数据并保留一位小数
function formatCurrencyFixed1(num) 
{
	if(typeof num != 'string'){
		num = num+"";
	}
    if(num)
    {
        //将num中的$,去掉，将num变成一个纯粹的数据格式字符串
        num = num.toString().replace(/\$|\,/g,'');
       
        //如果num不是数字，则将num置0，并返回
        if(num == undefined || num == null || num == 'null' || ''==num || isNaN(num) || num == 'Infinity' || num == '-Infinity'){return '--';}
        //如果是小数，保留两位
        if(num.indexOf(".")> 0){
        	num =Number(num).toFixed(1);
        }
        //如果num是负数，则获取她的符号
        var sign = num.indexOf("-")> -1 ? '-' : '';
        if(sign == '-'){
        	num = num.substring(1,num.length);
        }
        //如果存在小数点，则获取数字的小数部分
        var cents = num.indexOf(".")> 0 ? num.substr(num.indexOf(".")) : '';
        cents = cents.length>1 ? cents : '' ;//注意：这里如果是使用change方法不断的调用，小数是输入不了的
        //获取数字的整数数部分
        num = num.indexOf(".")>0 ? num.substring(0,(num.indexOf("."))) : num ;
        //如果没有小数点，整数部分不能以0开头
        if('' == cents){ if(num.length>1 && '0' == num.substr(0,1)){return '--';}}
        //如果有小数点，且整数的部分的长度大于1，则整数部分不能以0开头
        else{if(num.length>1 && '0' == num.substr(0,1)){return '--';}}
        //针对整数部分进行格式化处理，这是此方法的核心，也是稍难理解的一个地方，逆向的来思考或者采用简单的事例来实现就容易多了
        /*
          也可以这样想象，现在有一串数字字符串在你面前，如果让你给他家千分位的逗号的话，你是怎么来思考和操作的?
          字符串长度为0/1/2/3时都不用添加
          字符串长度大于3的时候，从右往左数，有三位字符就加一个逗号，然后继续往前数，直到不到往前数少于三位字符为止
         */
        for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
        {
            num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
        }
        //将数据（符号、整数部分、小数部分）整体组合返回
        return (sign + num + cents);    
    }else{
    	return '--';
    }

}
//格式化数据并保留两位小数
function formatCurrencyFixed2(num) 
{
	if(typeof num != 'string'){
		num = num+"";
	}
    if(num)
    {
        //将num中的$,去掉，将num变成一个纯粹的数据格式字符串
        num = num.toString().replace(/\$|\,/g,'');
        //如果num不是数字，则将num置0，并返回
        if(num == undefined || num == null || num == 'null' || ''==num || isNaN(num) || num == 'Infinity' || num == '-Infinity'){return '--';}
        //如果是小数，保留两位
       
        num =Number(num).toFixed(2);
        //如果num是负数，则获取她的符号
        var sign = num.indexOf("-")> -1 ? '-' : '';
        if(sign == '-'){
        	num = num.substring(1,num.length);
        }
        //如果存在小数点，则获取数字的小数部分
        var cents = num.indexOf(".")> 0 ? num.substr(num.indexOf(".")) : '';
        cents = cents.length>1 ? cents : '' ;//注意：这里如果是使用change方法不断的调用，小数是输入不了的
        //获取数字的整数数部分
        num = num.indexOf(".")>0 ? num.substring(0,(num.indexOf("."))) : num ;
        //如果没有小数点，整数部分不能以0开头
        if('' == cents){ if(num.length>1 && '0' == num.substr(0,1)){return '--';}}
        //如果有小数点，且整数的部分的长度大于1，则整数部分不能以0开头
        else{if(num.length>1 && '0' == num.substr(0,1)){return '--';}}
        //针对整数部分进行格式化处理，这是此方法的核心，也是稍难理解的一个地方，逆向的来思考或者采用简单的事例来实现就容易多了
        /*
          也可以这样想象，现在有一串数字字符串在你面前，如果让你给他家千分位的逗号的话，你是怎么来思考和操作的?
          字符串长度为0/1/2/3时都不用添加
          字符串长度大于3的时候，从右往左数，有三位字符就加一个逗号，然后继续往前数，直到不到往前数少于三位字符为止
         */
        for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
        {
            num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
        }
        //将数据（符号、整数部分、小数部分）整体组合返回
        return (sign + num + cents);    
    }else{
    	return '--';
    }

}
//格式化数据并保留指定位数小数
function formatCurrencyFixed(num,weishu) 
{
	if(typeof num != 'string'){
		num = num+"";
	}
    if(num)
    {
        //将num中的$,去掉，将num变成一个纯粹的数据格式字符串
        num = num.toString().replace(/\$|\,/g,'');
        //如果num不是数字，则将num置0，并返回
        if(num == undefined || num == null || num == 'null' || ''==num || isNaN(num) || num == 'Infinity' || num == '-Infinity'){return '--';}
        //如果是小数，保留两位
        if(num.indexOf(".")> 0){
        	if(weishu == undefined){
        		weishu = 2;
        	}
        	num =Number(num).toFixed(weishu);
        }
        //如果num是负数，则获取她的符号
        var sign = num.indexOf("-")> -1 ? '-' : '';
        if(sign == '-'){
        	num = num.substring(1,num.length);
        }
        //如果存在小数点，则获取数字的小数部分
        var cents = num.indexOf(".")> 0 ? num.substr(num.indexOf(".")) : '';
        cents = cents.length>1 ? cents : '' ;//注意：这里如果是使用change方法不断的调用，小数是输入不了的
        //获取数字的整数数部分
        num = num.indexOf(".")>0 ? num.substring(0,(num.indexOf("."))) : num ;
        //如果没有小数点，整数部分不能以0开头
        if('' == cents){ if(num.length>1 && '0' == num.substr(0,1)){return '--';}}
        //如果有小数点，且整数的部分的长度大于1，则整数部分不能以0开头
        else{if(num.length>1 && '0' == num.substr(0,1)){return '--';}}
        //针对整数部分进行格式化处理，这是此方法的核心，也是稍难理解的一个地方，逆向的来思考或者采用简单的事例来实现就容易多了
        /*
          也可以这样想象，现在有一串数字字符串在你面前，如果让你给他家千分位的逗号的话，你是怎么来思考和操作的?
          字符串长度为0/1/2/3时都不用添加
          字符串长度大于3的时候，从右往左数，有三位字符就加一个逗号，然后继续往前数，直到不到往前数少于三位字符为止
         */
        for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
        {
            num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
        }
        //将数据（符号、整数部分、小数部分）整体组合返回
        return (sign + num + cents);    
    }else{
    	return '--';
    }

}
//加载组件
//加载层

var index ;
function showloading(){
	
	 ityzl_SHOW_LOAD_LAYER(index);
//	 index=layer. load();
    jQuery("body").append("<div class='fullbg'></div>");
    jQuery(".fullbg").css("display","block");

}

// 隐藏层
function hideloading(){
	//没有水印名字禁止查看数据
	if (localStorage.getItem("name") == null || localStorage.getItem("name") == "null" || localStorage.getItem("name") == "") {
//		getDingdingName();
//		window.location.href=getRootPath_web()+"/jhcvs_new/tiaozhuan.html";
	}

	ityzl_CLOSE_LOAD_LAYER(index);
    jQuery(".fullbg").css("display","none");
//    watermark({ watermark_txt: localStorage.getItem("name") });
}
function hideloadingtwo(){
	//没有水印名字禁止查看数据
	if (localStorage.getItem("name") == null || localStorage.getItem("name") == "null" || localStorage.getItem("name") == "") {
//		getDingdingName();
//		window.location.href=getRootPath_web()+"/jhcvs_new/tiaozhuan.html";
	}

	ityzl_CLOSE_LOAD_LAYER(index);
    jQuery(".fullbg").css("display","none");
}
function ityzl_SHOW_LOAD_LAYER() {
    return index=layer.msg('努力加载中...', { icon: 16, shade: [0.5, '#f5f5f5'], scrollbar: false, offset: '50%', time: 300000 });
}
function ityzl_CLOSE_LOAD_LAYER(index) {
     layer.close(index);

}
function ityzl_SHOW_TIP_LAYER() {
     layer.msg('恭喜您，加载完成！', { time: 1000, offset: '50%' });
} 

/**
 * 日期转字符串
 * @param fmt
 * @returns
 */
Date.prototype.format = function(fmt) {
	var o = {
		"M+": this.getMonth() + 1, //月份 
		"d+": this.getDate(), //日 
		"h+": this.getHours(), //小时 
		"m+": this.getMinutes(), //分 
		"s+": this.getSeconds(), //秒 
		"q+": Math.floor((this.getMonth() + 3) / 3), //季度 
		"S": this.getMilliseconds() //毫秒 
	};
	if(/(y+)/.test(fmt)) {
		fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
	}
	for(var k in o) {
		if(new RegExp("(" + k + ")").test(fmt)) {
			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
		}
	}
	return fmt;

}

/**
 * 任意加减 天数、月数、年数的方法
 * @param date  日期  2018-08-09  yyyy-MM-dd 
 * @param num   改变得数值   合法整数
 * @param type  改变得类型  天：day 月：month 年：year 
 * @returns {String}  参数时间 加或减去对应数值的天或月或年 
 */
function getDate(date,num,type){  
    var today = new Date(date);  
    var settimes = '';
    if(type=='year'){
    	today.setFullYear(today.getFullYear() + num);
    }else if(type=='month'){
    	today.setMonth(today.getMonth() + num);
    }else{
    	today.setDate(today.getDate() + num);
    }
    var tYear = today.getFullYear();  
    var tMonth = today.getMonth();  
    var tDate = today.getDate();  
    
    tMonth = doHandleMonth(tMonth + 1);  
    tDate = doHandleMonth(tDate);  
//    console.log('获取时间'+tYear+"-"+tMonth+"-"+tDate);
    return tYear+"-"+tMonth+"-"+tDate;  
} 
//获取第几周
function getWeekNumber(d) {
	// Copy date so don't modify original
	d = new Date(d);
	d.setHours(0,0,0);
	// Set to nearest Thursday: current date + 4 - current day number
	// Make Sunday's day number 7
	d.setDate(d.getDate() + 4 - (d.getDay()||7));
	// Get first day of year
	var yearStart = new Date(d.getFullYear(),0,1);
	// Calculate full weeks to nearest Thursday
	var weekNo = Math.ceil(( ( (d - yearStart) / 86400000) + 1)/7)
	// Return array of year and week number
	var getFullYear = d.getFullYear();
	var getWeekNo = weekNo;
	return getWeekNo;
}
/**
 * 任意获取加减 天数、月数、年数差的方法
 * @param date  日期  2018-08-09  yyyy-MM-dd 
 * @param num   改变得数值   合法整数
 * @param type  改变得类型  天：day 月：month 年：year 
 * @returns {String}  参数时间 加或减去对应数值的天或月或年 
 */
function  getDayChaBetween(date1,date2){
	   var  startDate = Date.parse(date1);
	   var  endDate = Date.parse(date2);
	   var days=(endDate - startDate)/(1*24*60*60*1000);
	   // alert(days);
	   return  days;
	}
function  getHourChaBetween(date1,date2){
	   var  startDate = Date.parse(date1);
	   var  endDate = Date.parse(date2);
	   var days=(endDate - startDate)/(60*60*1000);
	   // alert(days);
	   return  days;
	}
//清除两边的空格 
String.prototype.trim = function() {   
	return this.replace(/(^\s*)|(\s*$)/g, ''); 
}; 
//{}占位符替换
String.prototype.signMix= function() {
	if(arguments.length === 0) return this;
	var param = arguments[0], str= this;
	if(typeof(param) === 'object') {
		for(var key in param)
			str = str.replace(new RegExp("\\{" + key + "\\}", "g"), param[key]);
		return str;
	} else {
		for(var i = 0; i < arguments.length; i++)
			str = str.replace(new RegExp("\\{" + i + "\\}", "g"), arguments[i]);
		return str;
	}
}
//时分秒转变为秒
function timeChangeSec(timeStr){
    return Number(timeStr.split(':')[0]*3600) + Number(timeStr.split(':')[1]*60) + Number(timeStr.split(':')[2]);
}
//秒转变为时分秒
function secChangeTime(sec){
	var h = Math.floor(sec / 3600) < 10 ? '0'+Math.floor(sec / 3600) : Math.floor(sec / 3600);
    var m = Math.floor((sec / 60 % 60)) < 10 ? '0' + Math.floor((sec / 60 % 60)) : Math.floor((sec / 60 % 60));
    var s = Math.floor((sec % 60)) < 10 ? '0' + Math.floor((sec % 60)) : Math.floor((sec % 60));
    return result = h + ":" + m + ":" + s;
}
/**
 * 获取本周的第一天
 * 返回格式: YYYY-mm-dd
 *    例子: 当日为: 2020-11-27
 *      返回日期为: 2020-11-23
 * */
function getCurrentWeekFirstDay(dateStr) {
	var date = new Date(dateStr);
    var weekFirstDay = new Date(date - (date.getDay() - 1) * 86400000)
    var firstMonth = Number(weekFirstDay.getMonth()) + 1

    if (firstMonth < 10) {
        firstMonth = '0' + firstMonth
    }
    let weekFirstDays = weekFirstDay.getDate();
    if (weekFirstDays < 10) {
        weekFirstDays = '0' + weekFirstDays;
    }
    return weekFirstDay.getFullYear() + '-' + firstMonth + '-' + weekFirstDays;
}

/**
 * 获取本周的最后一天
 * 返回格式: YYYY-mm-dd
 *    例子: 当日为: 2020-11-27
 *      返回日期为: 2020-11-29
 * */
function getCurrentWeekLastDay(dateStr) {
	var date = new Date(dateStr);
    var weekFirstDay = new Date(date - (date.getDay() - 1) * 86400000)
    var weekLastDay = new Date((weekFirstDay / 1000 + 6 * 86400) * 1000)
    var lastMonth = Number(weekLastDay.getMonth()) + 1
    if (lastMonth < 10) {
        lastMonth = '0' + lastMonth
    }
    let weekLastDays = weekLastDay.getDate();
    if (weekLastDays < 10) {
        weekLastDays = '0' + weekLastDays;
    }
    return weekFirstDay.getFullYear() + '-' + lastMonth + '-' + weekLastDays;
}

//获取水印名字
function getDingdingName(){
	var _config ;
	$.ajax({
		type : "post",
		data:"pageUrl="+location.href.replace(/\\&/g,'%26'),
		async: false,
		url : "../dingding/getconfig.do",
		dataType : "json",
		success : function(suc) {
//			alert(suc.agentid);
			_config = suc;
		}
	}); 
	dd.ready(function() {
		//channel runtime  requestOperateAuthCode requestAuthCode
	    dd.runtime.permission.requestAuthCode({
	        corpId: _config.corpId,
	        onSuccess: function(result) {
	        	getuserId(result);
	        },
	        onFail : function(err) {
	        	alert("错误"+JSON.stringify(err))
	        }
	 
	    });
	});
	function getuserId(result){
			    //$("body").text('https://oapi.dingtalk.com/user/getuserinfo?code=' + result.code + '&access_token='+ _config.token);
		$.ajax({
			url : '../dingding/dd.do',
			type : 'GET',
			data:"code="+result.code+"&token="+_config.token,
			dataType : "json",
			success : function(suc) {
			    
				sessionStorage.setItem("userId",suc.userid);
				sessionStorage.setItem("name",suc.name);
				sessionStorage.setItem("jobnumber",suc.jobnumber);
				localStorage.setItem("name",suc.name);

			},
			error : function(xhr, errorType, error) {
					alert(errorType + ', ' + error);
				}
		});
	}
	dd.error(function(err) {
		alert('dd error: ' + JSON.stringify(err));
	});
}